package com.egg.auth.enums.role;


import com.egg.common.swagger.annotation.SwaggerDisplayAnnotation;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Objects;

/**
 * 角色编码枚举类
 *
 * @author east
 */
@Getter
@SwaggerDisplayAnnotation
@AllArgsConstructor
public enum RoleAuthCodeEnum {


    /**
     * 允许访问所有请求地址
     */
    ADMIN("管理员", "admin", "*/**"),
    /**
     * 允许查看所有 '/web' 开头的路径的请求访问
     */
    WEB("电脑端成员", "web", "**/web/**"),
    /**
     * 允许查看所有 '/api' 开头的路径的请求访问
     */
    API("移动端成员", "api", "**/api/**"),
    /**
     * 允许查看所有 '/get' 开头的路径的请求访问
     */
    READ_ONLY("游客", "get", "get/**"),
    /**
     * 允许访问所有勾选了的请求地址
     */
    CUSTOMIZE("自定义(自行勾选权限)", "customize", ""),
    ;


    private String message;
    private String code;
    private String path;


    public static boolean isInvalid(String code) {
        if (null == code) {
            return true;
        }
        return !Arrays.stream(values()).anyMatch(o -> Objects.equals(code, o.getCode()));
    }

    @Override
    public String toString() {
        return message + ":" + code;
    }
}
